package com.huas.controller;

import com.huas.common.PageResult;
import com.huas.common.Result;
import com.huas.dto.CommentDTO;
import com.huas.service.CommentService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

@RestController
@Slf4j
@RequestMapping("/commentManagement")
public class CommentController {
    @Resource
    CommentService commentService;

    /**
     * 前端展示
     * 获取评论列表（分页，树形结构）
     */
    @GetMapping("/user/commentList")
    @PreAuthorize("hasAuthority('commentManagement:user:select')")
    public Result<PageResult> getCommentList(@RequestParam(defaultValue = "5") Integer page,
                                             @RequestParam(defaultValue = "1") Integer pageSize ,
                                             Integer titleId,Character type){
        log.info("前端展示类型为{}的标题id为{}的评论列表",type,titleId);
        //获取分页结果（包含评论的树形列表）
        PageResult pageResult = commentService.getCommentList(type,titleId,page,pageSize);
        return Result.success(pageResult);
    }
    /**
     * 后端展示
     * 获取评论列表（条件分页）
     */
    @GetMapping("/commentList")
    @PreAuthorize("hasAuthority('commentManagement:select')")
    public Result<PageResult> pageAll(@RequestParam(defaultValue = "10") Integer page,
                                   @RequestParam(defaultValue = "1") Integer pageSize ,
                                   Character type,Integer titleId){
        log.info("后端展示条件分页评论列表，参数为：{}，{}，{},{}",page,pageSize,type,titleId);
        //获取分页结果（包含评论的树形列表）
        PageResult pageResult = commentService.pageAll(page,pageSize,type,titleId);
        return Result.success(pageResult);
    }
    /**
     * 发表评论
     */
    @PostMapping
    @PreAuthorize("hasAuthority('commentManagement:insert')")
    public Result addComment(@RequestBody CommentDTO commentDTO){
        log.info("添加评论内容为：{}",commentDTO);
        commentService.addComment(commentDTO);
        return Result.success();
    }
    /**
     * 删除评论
     */
    @DeleteMapping("/{id}")
    @PreAuthorize("hasAuthority('commentManagement:delete')")
    public Result delete(@PathVariable Integer id){
        log.info("要删除的评论id为：{}",id);
        commentService.delete(id);
        return Result.success();
    }
}
